package com.example.d6_homework.homework03;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        //  需求模拟注册用户,如果存在要注册的用户,直接显示"对不起,您注册的用户已经存在!请直接登录!",可以继续注册;
        //  如果不存在要注册的用户,显示"注册成功!",并将所有用户的信息显示出来!
        // 1.创建集合存储用户的数据
        List<User> usersList = new ArrayList<>();

        // 2.创建3个User对象并加入集合中
        usersList.add(new User("小明", "123"));
        usersList.add(new User("小红", "456"));
        usersList.add(new User("小勇", "789"));

        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.print("请输入用户名:");
            String name = sc.next();
            // 3.根据用户名判断用户是否已经存在
            boolean isExist = exist(usersList, name);
            if (isExist) {
                System.out.println("对不起,您注册的用户已经存在!请直接登录!");
            } else {
                // 说明不存在,直接注册用户信息
                System.out.print("请输入密码:");
                String password = sc.next();
                // 创建User对象
                User user = new User();
                user.setName(name);
                user.setPassword(password);
                // 将用户信息加入集合中
                usersList.add(user);
                System.out.println("注册成功!");
                // 打印所有的用户信息
                printUsers(usersList);
                break;
            }
        }
    }

    /**
     * 该方法用于打印所有的用户信息
     *
     * @param usersList 存储用户的集合
     */
    private static void printUsers(List<User> usersList) {
        System.out.println("所有用户信息如下:");
        usersList.forEach(user -> System.out.println(user.getName() + ":" + user.getPassword()));
    }

    /**
     * 该方法用户判断用户是否存在
     *
     * @param usersList 存储用户的集合
     * @param name      用户输入的用户名
     * @return true表示用户存在, false表示用户不存在
     */
    private static boolean exist(List<User> usersList, String name) {
        for (User user : usersList) {
            if (name.equals(user.getName())) {
                return true;
            }
        }
        return false;
    }
}
